<?php
Class Servicio extends AppModel {
	
	var $name = 'Servicio';
	
	var $hasMany = array 
	(
		'Serviciobrindado' => array 
			(
				'className'=>'Serviciobrindado',
					'conditions'=> '',
					'order'=> '',
					'limit'=>'',
					'foreignKey' => 'servicios_id',
					'dependent' => false,
					'exclusive' => false,
					'finderQuery' => '',
					'fields'     => '',
					'offset'     => '',
					'counterQuery' => ''
			),
		'Servicioobtenido' => array 
			(
				'className'=>'Servicioobtenido',
					'conditions'=> '',
					'order'=> '',
					'limit'=>'',
					'foreignKey' => 'servicios_id',
					'dependent' => false,
					'exclusive' => false,
					'finderQuery' => '',
					'fields'     => '',
					'offset'     => '',
					'counterQuery' => ''
			),
		'ArticuloBaja' => array 
			(
				'className'=>'Articulo',
					'conditions'=> '',
					'order'=> '',
					'limit'=>'',
					'foreignKey' => 'servicio_baja',
					'dependent' => false,
					'exclusive' => false,
					'finderQuery' => '',
					'fields'     => '',
					'offset'     => '',
					'counterQuery' => ''
			),
		'ArticuloAlta' => array 
			(
				'className'=>'Articulo',
					'conditions'=> '',
					'order'=> '',
					'limit'=>'',
					'foreignKey' => 'servicio_alta',
					'dependent' => false,
					'exclusive' => false,
					'finderQuery' => '',
					'fields'     => '',
					'offset'     => '',
					'counterQuery' => ''
			)	
	);
	
	//Validaciones de los campos	
	var $validate = array
	(
		'nombre' => '/^[a-zA-Z0-9\W\.\-\_\s]{4,50}$/i',
		'precio_sugerido' => '/^[0-9]{0,7}\.[0-9]{0,2}$|^[0-9]{0,7}$/i'
	);
	
//en este arreglo van todas los campos que son uniques	
	var $unique = array 
	(
		'nombre'
	);
	
//funcion que valida antes de una funcion save
//si retorna true guarda sin problemas , si retorna false no guarda	
function validates()
{
//-------------------------------------------------------------------------------------

// Recorre el arreglo $unique y consulta en la base de datos si existe un registro con 
// con el campo $unique[] igual al data que se le pasa por parametro
// Es decir, retorna false si se intenta agregar un registro en donde el campo $unique[] ya 
// esta agregardo

	foreach($this->unique as $campoUnique)
	{	
		//$this->name = 'Cliente'
		if (!empty($this->data[$this->name]))//entra si data no esta vacio
		{
			$valor = $this->data[$this->name][$campoUnique]; //valor del campo a encontrar
			//consultamos en la base de datos el registro
			$registro = $this->findAll(array($campoUnique => $valor));
			
			//resultado del registro
			//$registro['0'][$this->name][$campoUnique]  --> valor encontrado en la DB
			//si no es vacio significa que encontro uno y hay que invalidar el campo
			if (!empty($registro['0'][$this->name][$campoUnique]))
			{
				$valorIdDB = $registro['0'][$this->name]['id']; //id del registro encontrado
				//si no esta seteado coloca -1, esto es porque cuando se agrega el indice id no existe
				if(empty($this->data[$this->name]['id']))
					$this->data[$this->name]['id']='-1';
				$valorIdData = $this->data[$this->name]['id'];  //id del data
				if($valorIdDB != $valorIdData)
					$this->invalidate($campoUnique);//ejecuta tagErrorMsg('Empresa/usuario')
				else
					return true;
			}
		}
	}
//-------------------------------------------------------------------------------------	
		$errors = $this->invalidFields();//devuelve los campos invalidos
		//$this->requestAction("/clientes/agregar/$errors");//le pasamos los errores al controlador
		return count($errors) == 0;	//si retorna true => guarda, sino no guarda
}	

 
	
}
?>
